package com.rp.android_gateway.config.mybatisplus;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
//import org.apache.shiro.SecurityUtils;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

/**
 *  实体类自动填充处理
 * @author badao
 * @version 1.0
 * @see
 **/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

//    @Autowired
//    private SysUserService sysUserService;

    @Override    //在执行mybatisPlus的insert()时，为我们自动给某些字段填充值，这样的话，我们就不需要手动给insert()里的实体类赋值了
    public void insertFill(MetaObject metaObject) {
        //其中方法参数中第一个是前面自动填充所对应的字段，第二个是要自动填充的值。第三个是指定实体类的对象
//        String username = (String) SecurityUtils.getSubject().getPrincipal();
//        this.setFieldValByName("createBy", username, metaObject);
        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
        this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
        //操作时间
       this.setFieldValByName("operateDate", LocalDateTime.now(), metaObject);
    }

    @Override//在执行mybatisPlus的update()时，为我们自动给某些字段填充值，这样的话，我们就不需要手动给update()里的实体类赋值了
    public void updateFill(MetaObject metaObject) {
//        String username = (String) SecurityUtils.getSubject().getPrincipal();
//        this.setFieldValByName("updateBy", username, metaObject);
        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
    }


//    public SysUser getSysUser() {
//        String username = getUserName();
//        if(NullIs.isEmpty(username)){
//            return null;
//        }
//        return sysUserService.findSysUserByUsername(getUserName());
//    }

    /**
     * @return java.lang.String
     * @Author HuJingYu
     * @Date 17:00 2020-12-22
     * @Description 登录用户的用户名
     */
//    public String getUserName() {
//        return (String) SecurityUtils.getSubject().getPrincipal();
//    }


}

